package main

import "fmt"

// byte类型和rune类型：英文、数组是byte类型，中文或者其他字节是rune类型
// uint8类型，或者叫byte类型，代表了ASCII码的一个字符
// rune类型是int32，代表一个UTF-8字符

// Go语言中为了处理非ASCII码字符集的字符，定义了新的rune类型

func main() {
	s := "Hello沙河"
	// len()求的是byte字节的数量
	n := len(s) //求字符串s的长度，把长度值保存在变量n中
	fmt.Println("变量长度是:", n)

	// for i := 0; i < n; i++ {
	// 	fmt.Println(s[i])        // 获取的是ASCII码
	// 	fmt.Printf("%c\n", s[i]) // utr8的字符不能原样输入，乱码  // "%c 字符
	// }

	for _, c := range s { // range 递增
		fmt.Println(c)        // 获取的是ASCII码
		fmt.Printf("%c\n", c) // 从字符串中拿出具体的字符
	}

	// 字符串修改
	// 字符串是不能修改的，不可变数据类型
	s2 := "白萝卜"
	s3 := []rune(s2) // s2通过rune()转换成rune类型，放在[]里 ==》[30333 33821 21340]
	fmt.Println(s3)
	// s3[0] = "红" // [白 萝 卜] 列表的值是由字符组成
	s3[0] = '红'             // 修改下标是0的值
	fmt.Println(string(s3)) // 把s3转换为字符串类型
}
